package isjinhao.jlox.grammar.statement.visitor;

import isjinhao.jlox.grammar.code.represention.Block;
import isjinhao.jlox.grammar.statement.represention.*;

/**
 * @Author ISJINHAO
 * @Date 2021/2/22 18:50
 */
public interface StatementVisitor<R> {

    default R visit(Statement statement) {
        return statement.accept(this);
    }

    default R visitPrintStmt(Print stmt) {
        return null;
    }

    default R visitVarDefinitionStmt(VarDefinition stmt) {
        return null;
    }

    default R visitAssignmentExpr(Assignment assignment) {
        return null;
    }


    default R visitReturn(Return ret) {return null;}



//    R visitReturnStmt(Return stmt);

//    R visitFunctionStmt(Function stmt);

//    R visitClassStmt(Class stmt);

}